import axios from './index.js'

//订单相关

//详情页中的 立即购买(一种商品立即单独下单) 使用默认收货地址
export const buyNowFun = function (productId, num, selectType) {
    // productId 要加入购物车的商品id
    // num 购买的数量
    // selectType 选择的规格参数

    // 响应数据:
    // 标准的响应数据结构,
    // 成功时, data 中存储的数据的主要结构如下:
    // data: '订单id'

    return axios.post('/api/order/addOne', 
        { productId, num, selectType },
        {
            headers: { "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

//购物车结算(下单)
export const addUserOrderFun = function (name, phone, addr, cartId, productIdArr=[]) {
    // name 收件人
    // phone 收件人手机号
    // addr 收件地址
    // cartId 购物车标识
    // ids 购买的商品id,多个商品id之间以逗号分隔
    let ids;
    if(productIdArr.length > 0) {
        ids = productIdArr.join(',');
    }

    // 响应数据:
    // 标准的响应数据结构
    // 成功时, data 中存储的数据的主要结构如下:
    // data: '订单id'
    return axios.post('/api/order/add', 
        { name, phone, addr, cartId, ids },
        {
            headers: { "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

//根据订单状态获取登录用户的订单数据 可分页
export const findUserOrderFun = function (status=0, pageNum=1, pageSize=5) {
    // status 订单状态: 0全部,1待付款,2待发货,3待收货,4待评价,5已完成,6已删除,7已取消
    // pageNum 当前页码
    // pageSize 每页展示的数据量

    // 响应数据:
    // 标准的响应数据结构,
    // 成功时, data 中存储的数据的主要结构如下:
    // data: {
    //     total: 总数据量,
    //     pageNum: 当前页码,
    //     pages: 总页数,
    //     list: [//当前页的订单集合
    //         {//一个订单
    //             //标识符,订单编号,总金额,总数量,状态
    //             id,no,totalPrice,totalNum,status,
    //             details:[//订单详情
    //                 //详情标识符,商品id,标题,图片,购买时的价格,购买的数量,选择的规格参数
    //                 {id,productId,title,image,price,num,type}
    //             ],
    //             //收件人,手机号,收货地址
    //             name, phone, addr
    //         }
    //     ]
    // }
    return axios.request({
        url: '/api/order/find',
        method: 'get',
        params: {
            status, pageNum, pageSize
        }
    });
};

//用户取消订单
export const userCancelOrderFun = function (id) {
    // id 订单id
    return axios.request({
        url: '/api/order/cancel',
        method: 'get',
        params: { id }
    });
};

//用户确认收货
export const userConfirmReceiptFun = function (id) {
    // id 订单id
    return axios.request({
        url: '/api/order/confirm',
        method: 'get',
        params: { id }
    });
};

//用户删除已完成的订单
export const userRemoveOrderFun = function (id) {
    // id 订单id
    return axios.request({
        url: '/api/order/remove',
        method: 'get',
        params: { id }
    });
};

//(订单支付页)查询登录用户的指定订单信息
export const findUserOneOrderFun = function (orderId) {
    // orderId 订单id

    // 响应数据:
    // 标准的响应数据结构,
    // 成功时, data 中存储的数据的主要结构如下:
    // data: {
    //     //标识符,订单编号,总金额,总数量,状态,详情,收件人,手机号,收件地址
    //     id:, no, totalPrice, totalNum, status, details: [
    //         //详情标识符,商品id,标题,图片,购买时价格,购买数量,选择的规格参数
    //         {id, productId, title, image, price, num, type},
    //     ], name, phone, addr,
    //     //订单失效时间(毫秒值)
    //     expireTime
    // }
    return axios.request({
        url: '/api/order/one',
        method: 'get',
        params: { orderId }
    });
};

//修改登录用户的未支付的订单的收件信息
export const modifyOrderAddrFun = function (orderId, name, phone, addr) {
    // orderId 订单id
    // name 收件人
    // phone 收件人手机号
    // addr 收件地址

    return axios.post('/api/order/addr', 
        { orderId, name, phone, addr }, 
        {
            headers: { "Content-Type": "application/x-www-form-urlencoded" }
        }
    );
};

// 付款(模拟支付, 服务器端修改订单状态为 2 已付款待发货)
export const userOrderPayFun = function (orderId, payType) {
    // orderId 订单id
    // payType 支付方式:1支付宝,2微信,3银联

    return axios.request({
        url: '/api/order/pay',
        method: 'get',
        params: { orderId, payType }
    });
};
